package com.wesley.future.Controller;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ActionEvent;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import com.wesley.future.Dao.UsuarioDao;
import com.wesley.future.DaoImp.UsuarioDaoImp;
import com.wesley.future.Model.Usuario;

@ManagedBean
@SessionScoped
public class UsuarioController implements Serializable {

	private Usuario usuario;
	private DataModel listaUsuarios;
	private Usuario selectedUsuario;
	private String nomeConsulta;

	public DataModel getListaUsuarios() {
		return listaUsuarios;
	}

	public void consultar() {
		
		List<Usuario> lista = new ArrayList<Usuario>();
		
		if (this.nomeConsulta == null || "".equals(this.nomeConsulta)) {
			lista = new UsuarioDaoImp().list();
		} else {
			lista = new UsuarioDaoImp().listByParameter(this.nomeConsulta);
		}
		listaUsuarios = new ListDataModel(lista);
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public void prepararAdicionarUsuarios(ActionEvent actionEvent) {
		usuario = new Usuario();
	}

	public void prepararAlterarUsuarios(ActionEvent actionEvent) {
		usuario = (Usuario) (selectedUsuario);

	}

	public String excluirUsuarios() {
		UsuarioDao dao = new UsuarioDaoImp();
		dao.remove(selectedUsuario);
		return "index";
	}

	public void adicionarUsuarios(ActionEvent actionEvent) {
		UsuarioDao dao = new UsuarioDaoImp();
		dao.save(usuario);

	}

	public void alterarUsuarios(ActionEvent actionEvent) {
		UsuarioDao dao = new UsuarioDaoImp();
		dao.update(usuario);
	}

	public Usuario getSelectedUsuario() {
		return selectedUsuario;
	}

	public void setSelectedUsuario(Usuario selectedUsuario) {
		this.selectedUsuario = selectedUsuario;
	}

	public String getNomeConsulta() {
		return nomeConsulta;
	}

	public void setNomeConsulta(String nomeConsulta) {
		this.nomeConsulta = nomeConsulta;
	}

	
}
